<?php

namespace common\models;

use Yii;

/**
 * This is the model class for table "{{%system_menu}}".
 *
 * @property int $id
 * @property int $pid 父ID
 * @property int $sort 排序
 * @property string $name 名称
 * @property string $icon 图标
 * @property string $category 种类, MENU:菜单 FN:功能
 * @property string $link 链接
 * @property string $dump_way 链接方式, _blank:新窗口 _self:当前窗口 _parent:父窗口 _top:顶部窗口
 * @property string $desc 描述
 * @property int $is_quick 是否允许设置为快捷操作, 0:不可以 1:可以; 请注意:只可未GET请求,不可动态传参,只能以弹窗方式打卡,请根据实际情况进行设置.
 * @property string $created_at
 * @property string|null $updated_at
 */
class SystemMenu extends \builder\base\BaseActiveRecord
{
    // 种类字典
    const CONST_CATEGORY_DICT = [
        'MENU' => ['text' => '菜单'],
        'FN' => ['text' => '功能'],
    ];

    // 链接方式字典
    const CONST_DUMP_WAY_DICT = [
        '_blank' => ['text' => '新窗口'],
        '_self' => ['text' => '当前窗口'],
        '_parent' => ['text' => '父窗口'],
        '_top' => ['text' => '顶部窗口'],
    ];

    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return '{{%system_menu}}';
    }

    /**
     * 场景
     * @return array
     */
    public function scenarios()
    {
        $scenarios = parent::scenarios();
        // 新增菜单
        $scenarios['SCE_Menu_Create'] = ['pid', 'name', 'icon', 'category', 'link', 'dump_way', 'desc', 'is_quick', 'sort'];
        // 更新菜单
        $scenarios['SCE_Menu_Update'] = ['pid', 'name', 'icon', 'category', 'link', 'dump_way', 'desc', 'is_quick', 'sort'];

        return $scenarios;
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['pid', 'name', 'category', 'link'], 'required'],
            [['pid', 'sort', 'is_quick'], 'integer'],
            [['sort'], 'default', 'value' => 100],
            [['is_quick'], 'default', 'value' => 0],
            [['created_at', 'updated_at'], 'safe'],
            [['name', 'icon', 'category', 'dump_way'], 'string', 'max' => 50],
            [['icon'], 'default', 'value' => ''],
            [['dump_way'], 'default', 'value' => '_self'],
            [['link', 'desc'], 'string', 'max' => 255],
            [['desc'], 'default', 'value' => ''],
            [['link'], 'unique'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'pid' => '父ID',
            'name' => '名称',
            'icon' => '图标',
            'category' => '种类',
            'link' => '链接',
            'dump_way' => '链接方式',
            'desc' => '描述',
            'is_quick' => '是否允许设置为快捷操作',
            'sort' => '排序',
            'created_at' => '添加时间',
            'updated_at' => '上次更新时间',
        ];
    }
}
